package com.pz.dx.dxm.config.saToken;

import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.filter.SaServletFilter;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import com.pz.dx.common.exception.BizCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;

/**
 * [Sa-Token 权限认证] 全局配置类
 */
@Configuration
@Slf4j
public class SaTokenConfigure {
//    /** webFlux配置
//     * 注册 [Sa-Token全局过滤器]
//     */
//    @Bean
//    public SaServletFilter getSaReactorFilter() {
//        return new SaServletFilter()
//                // 指定 [拦截路由]
//                .addInclude("/**")
//                // 指定 [放行路由]
//                .addExclude("/favicon.ico")
//                // 指定[认证函数]: 每次请求执行
//                .setAuth(obj -> {
//                    // 登录认证,/auth/**路径必须登录
//                     SaRouter.match("/auth/**",r -> StpUtil.checkLogin());
//
//                     // TODO 权限验证
//                })
//                // 指定[异常处理函数]：每次[认证函数]发生异常时执行此函数
//                .setError(e -> {
//                    if(e instanceof NotLoginException){
//                        return new SaResult(BizCodeEnum.USER_NOT_LOGIN.getCode(), BizCodeEnum.USER_NOT_LOGIN.getMsg(), null);
//                    }
//                    log.error("sa-token全局异常处理: " + e);
//                    return SaResult.error(e.getMessage());
//                })
//                ;
//    }
}

